import Vue from 'vue'
import VueRouter from "vue-router";
import App from './App.vue'
import store from './vuex/index'
import routes from './router'
import './public-path';
import {
  myLocalStorage,
  mySessionstorage
} from '@/uilts/uilts'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css'; // 默认主题
// import '../static/css/theme-green/index.css';       // 浅绿色主题
import './assets/css/icon.css';
import './public/directives';
import "babel-polyfill";
import global from '@/mixin/global'
import http from "@/api/http";
Vue.use(VueRouter);
Vue.use(global);
Vue.config.productionTip = false
Vue.use(ElementUI);
Vue.prototype.$http = http;
Vue.prototype.$myLocalStorage = window.$myLocalStorage = myLocalStorage;
Vue.prototype.$mySessionstorage = window.$mySessionstorage = mySessionstorage;

import actions from '@/micro/actions'


let router = null;
let instance = null;

function render(props = {}) {
  const {
    container
  } = props;
  if (Object.keys(props).length>0) {
    // 注入 actions 实例
    actions.setActions(props);
  }
  router = new VueRouter({
    base: window.__POWERED_BY_QIANKUN__ ? '/vue' : '/',
    mode: 'history',
    routes,
  });
  //使用钩子函数对路由进行权限跳转
  router.beforeEach((to, from, next) => {
    document.title = to.meta.title
    const role = myLocalStorage.get('token');
    if (!role && to.path !== '/login') {
      next('/login');
    } else if (to.meta.permission) {
      // 如果是管理员权限则可进入，这里只是简单的模拟管理员权限而已
      role === 'admin' ? next() : next('/403');
    } else {
      // 简单的判断IE10及以下不进入富文本编辑器，该组件不兼容
      // if (navigator.userAgent.indexOf('MSIE') > -1 && to.path === '/editor') {
      //     Vue.prototype.$alert('vue-quill-editor组件不兼容IE10及以下浏览器，请使用更高版本的浏览器查看', '浏览器不兼容通知', {
      //         confirmButtonText: '确定'
      //     });
      // } else {
      //     next();
      // }

      next();
    }
  })

  instance = new Vue({
    router,
    store,
    render: (h) => h(App),
  }).$mount(container ? container.querySelector('#app') : '#app');
}

// 独立运行时
if (!window.__POWERED_BY_QIANKUN__) {
  render();
}

export async function bootstrap() {
  console.log('[vue] vue app bootstraped');
}
export async function mount(props) {
  console.log('[vue] props from main framework', props);
  render(props);
}
/**
 * 可选生命周期钩子，仅使用 loadMicroApp 方式加载微应用时生效
 */
export async function update(props) {
  console.log('update props', props);
}
export async function unmount() {
  instance.$destroy();
  instance.$el.innerHTML = '';
  instance = null;
  router = null;
}